package cate.game.role.bag.equip;

import cate.common.table.d.GDBag;
import cate.common.table.d.GDObj;
import cate.common.table.item.IBagItemTpl;
import cate.common.table.item.equip.row.EquipBaseRow;
import cate.game.res.RewardShow;
import cate.game.role.Role;
import cate.game.role.bag.BagContainer;
import cate.game.role.bag.equip.msg.EquipAddResp;
import cate.game.role.bag.item.msg.ItemAddResp;
import com.fasterxml.jackson.annotation.JsonIgnore;


/**
 * 装备背包
 */
public class EquipBag extends BagContainer<Equip> {
    public EquipBag() {
    }

    public EquipBag(Role role) {
        super(role);
    }

    @Override
    public int calcCapacity() {
        return GDBag.Capcity.EQUIP;
    }

    @Override
    protected ItemAddResp createItemAddMsg() {
        return new EquipAddResp();
    }

    @Override
    protected Equip createItem(int tid, long num) {
        return new Equip(role, tid, num);
    }

    @Override
    @JsonIgnore
    public IBagItemTpl getItemTpl(int templateId) {
        return role.getGame().table.equip.base.get(templateId);
    }

    @Override
    protected void onItemCreated(Equip equip) {
        EquipBaseRow tpl = equip.getTpl(role.getGame());
        if (tpl == null){
            return;
        }
        role.getHistory().action.equipAdded(tpl.quality,1);
    }

    @Override
    protected byte getItemType() {
        return GDObj.Type.EQUIP;
    }
    
    @Override
    protected RewardShow onItemRemoved(Equip equip) {
        return equip.backReward();
    }
}
